#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "opencv2/imgproc.hpp"
#include <QMainWindow>
#include <QSerialPort>
#include <QTimer>
#include <iostream>
#include <vector>

using namespace std;
class SerialWorker;
class QThread;

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow {
  Q_OBJECT

public:
  MainWindow(QWidget *parent = nullptr);
  ~MainWindow();
  void show_video();
  QString text;
  float confidence;
  string pn;
  int flag = 1;
  void clear_label_text(); // 清空标签
                           // bool recognize = false;
  QString is_card;

signals:
  void recognize_car(QString cardNumber);
  void rfidCardDetected(QString cardNumber); // 添加RFID检测信号
  void open_return_timer();

public slots:
  void send_frame_to_server(cv::Mat &frame);
  void SmoothScrollingLabel(QString text); // 平滑滚动
  void recognizeLicensePlate(QString cardNumber);
  void onRfidCardDetected(QString cardNumber); // RFID卡检测槽函数
  void onSerialError(QString error);           // 串口错误槽函数
  void receiver_licensePlate();

private:
  Ui::MainWindow *ui;
  // QSerialPort *serial;
  // QTimer *readTimer;
  // QByteArray serialBuffer;    // 串口数据缓冲区
  SerialWorker *serialWorker; // 串口工作对象
  QThread *serialThread;      // 串口工作线程
  QByteArray byteArray;
};
#endif // MAINWINDOW_H
